package edu.eam.proyectodesarrollojpa.entidades;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
 * The persistent class for the ESTUDIANTE database table.
 * 
 */
@Entity
@Table(name = "ESTUDIANTE")
public class Estudiante implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "ESTUDIANTE_CEDULA_ESTUDIANTE_GENERATOR", sequenceName = "SEC_ESTUDIANTE")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ESTUDIANTE_CEDULA_ESTUDIANTE_GENERATOR")
	@Column(name = "CEDULA_ESTUDIANTE")
	private Long cedulaEstudiante;
	
	@Column(name = "NOMBRE_ESTUDIANTE")
	private String nombre;
	
	@Column(name = "APELLIDO_ESTUDIANTE")
	private String apellido;
	
	@Column(name = "TELEFONO_ESTUDIANTE")
	private String telefono;
	
	@Column(name = "EMAIL_ESTUDIANTE")
	private String email;
	
	@Column(name = "DIRECCION_ESTUDIANTE")
	private String direccion;
	
	@Column(name = "SEMETRE_ESTUDIANTE")
	private Long semestre;
	
	// uni-directional many-to-one association to TipoAlternativaInversion
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "PROGRAMA_ESTUDIANTE")
	private Programa programa;

	public Estudiante() {
	}

	/**
	 * Metodo encargado de retornar el valor del atributo cedulaEstudiante
	 * @return El cedulaEstudiante asociado a la clase
	 */
	public Long getCedulaEstudiante() {
		return cedulaEstudiante;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo cedulaEstudiante
	 * @param cedulaEstudiante El nuevo cedulaEstudiante a modificar.
	 */
	public void setCedulaEstudiante(Long cedulaEstudiante) {
		this.cedulaEstudiante = cedulaEstudiante;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo nombre
	 * @return El nombre asociado a la clase
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo nombre
	 * @param nombre El nuevo nombre a modificar.
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo apellido
	 * @return El apellido asociado a la clase
	 */
	public String getApellido() {
		return apellido;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo apellido
	 * @param apellido El nuevo apellido a modificar.
	 */
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo telefono
	 * @return El telefono asociado a la clase
	 */
	public String getTelefono() {
		return telefono;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo telefono
	 * @param telefono El nuevo telefono a modificar.
	 */
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo email
	 * @return El email asociado a la clase
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo email
	 * @param email El nuevo email a modificar.
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo direccion
	 * @return El direccion asociado a la clase
	 */
	public String getDireccion() {
		return direccion;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo direccion
	 * @param direccion El nuevo direccion a modificar.
	 */
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo semestre
	 * @return El semestre asociado a la clase
	 */
	public Long getSemestre() {
		return semestre;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo semestre
	 * @param semestre El nuevo semestre a modificar.
	 */
	public void setSemestre(Long semestre) {
		this.semestre = semestre;
	}

	/**
	 * Metodo encargado de retornar el valor del atributo programa
	 * @return El programa asociado a la clase
	 */
	public Programa getPrograma() {
		return programa;
	}

	/**
	 * Metodo encargado de modificar el valor del atributo programa
	 * @param programa El nuevo programa a modificar.
	 */
	public void setPrograma(Programa programa) {
		this.programa = programa;
	}




	
	
	
}